Cod sursa(job #1723742)

Utilizator fanache99Constantin-Buliga Stefan fanache99 Data 1 iulie 2016 14:42:03
Problema Congr Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.32 kb
#include<cstdio>
#include<vector>
#include<cstdlib>
#include<ctime>
#define DIM 8192
#define MAXN 300005
using namespace std;
vector<int> first,second;
char buffer[DIM];
int position=0;
void read(int &number){
    number=0;
    while(buffer[position]<'0'||buffer[position]>'9'){
        position++;
        if(position==DIM){
            fread(buffer,1,DIM,stdin);
            position=0;
        }
    }
    while(buffer[position]>='0'&&buffer[position]<='9'){
        number=number*10+buffer[position]-'0';
        position++;
        if(position==DIM){
            fread(buffer,1,DIM,stdin);
            position=0;
        }
    }
}
int v[2*MAXN];
int main(){
    freopen("congr.in","r",stdin);
    freopen("congr.out","w",stdout);
    int n,i,a,b,temp;
    long long sum=0;
    srand(time(0));
    fread(buffer,1,DIM,stdin);
    read(n);
    for(i=1;i<2*n;i++){
        read(v[i]);
        if(i<=n){
            sum+=v[i];
            first.push_back(i);
        }
        else
            second.push_back(i);
    }
    while(sum%n!=0){
        a=rand()%n;
        b=rand()%(n-1);
        sum=sum-v[first[a]]+v[second[b]];
        temp=first[a];
        first[a]=second[b];
        second[b]=temp;
    }
    for(i=0;i<first.size();i++)
        printf("%d ",first[i]);
    return 0;
}