Cod sursa(job #2418225)

Utilizator TheNextGenerationAyy LMAO TheNextGeneration Data 4 mai 2019 12:57:59
Problema Congr Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.49 kb
#include <bits/stdc++.h>

using namespace std;
class InParser {
private:
	FILE *fin;
	char *buff;
	int sp;

	char read_ch() {
		++sp;
		if (sp == 4096) {
			sp = 0;
			fread(buff, 1, 4096, fin);
		}
		return buff[sp];
	}

public:
	InParser(const char* nume) {
		fin = fopen(nume, "r");
		buff = new char[4096]();
		sp = 4095;
	}

	InParser& operator >> (int &n) {
		char c;
		while (!isdigit(c = read_ch()) && c != '-');
		int sgn = 1;
		if (c == '-') {
			n = 0;
			sgn = -1;
		} else {
			n = c - '0';
		}
		while (isdigit(c = read_ch())) {
			n = 10 * n + c - '0';
		}
		n *= sgn;
		return *this;
	}

	InParser& operator >> (long long &n) {
		char c;
		n = 0;
		while (!isdigit(c = read_ch()) && c != '-');
		long long sgn = 1;
		if (c == '-') {
			n = 0;
			sgn = -1;
		} else {
			n = c - '0';
		}
		while (isdigit(c = read_ch())) {
			n = 10 * n + c - '0';
		}
		n *= sgn;
		return *this;
	}
};
InParser in("congr.in");
ofstream out("congr.out");
const int N = 300005;
pair<int,int> v[2*N];
int main()
{
    int n;
    long long s = 0;
    in >> n;
    for (int i = 1; i<=2*n-1; i++)
    {
        in >> v[i].first;
        v[i].second = i;
        if (i<=n)
            s+=v[i].first;
    }
    srand(time(0));
    while (s%n)
    {
        int k1 = rand()%n+1, k2 = rand()%(n-1)+n+1;
        s-=v[k1].first;
        s+=v[k2].first;
        swap(v[k1],v[k2]);
    }
    for (int i = 1; i<=n; i++)
        out << v[i].second << " ";
}