Cod sursa(job #2005669)

Utilizator patcasrarespatcas rares danut patcasrares Data 27 iulie 2017 18:55:12
Problema Curcubeu Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include<fstream>
#include<iostream>
#include<vector>
#include<set>
#define DN 1100005
using namespace std;
ifstream fin("curcubeu.in");
ofstream fout("curcubeu.out");
vector<pair<int,int> >st[DN];
vector<pair<int,int> >dr[DN];
multiset<pair<int,int>,greater<pair<int,int> > >s;
long long n,a,b,c,v;
int main()
{
    fin>>n>>a>>b>>c;
    for(int i=1;i<n;i++)
    {
        int d=a,e=b,f=c;
        a=(d*i)%n;
        b=(e*i)%n;
        c=(f*i)%n;
        st[min(a,b)].push_back(make_pair(i,c));
        dr[max(a,b)].push_back(make_pair(i,c));
    }
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<st[i].size();j++)
        {
            int d=st[i][j].first;
            int f=st[i][j].second;
            s.insert(make_pair(d,f));
        }
        if(!s.empty())
            v=s.begin()->second;
        else
            v=0;
        if(i)
            fout<<v<<'\n';
        for(int j=0;j<dr[i].size();j++)
        {
            int d=dr[i][j].first;
            int f=dr[i][j].second;
            s.erase(s.find(make_pair(d,f)));
        }
    }
}