Cod sursa(job #2604889)

Utilizator valentinchipuc123Valentin Chipuc valentinchipuc123 Data 23 aprilie 2020 19:42:18
Problema Ridicare la putere in timp logaritmic Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.97 kb
#include <bits/stdc++.h>

using namespace std;

ifstream f("procol.in");
ofstream g("procol.out");

const int MOD=666013;
int cer;
int n,k,c;
int v[200005];
map<int,int> dp;
map<int,bool> fost;

long long int exp(long long int a,long long int b){

 if(b==0)
  return 1;
 long long int x=exp(a,b/2);
 if(b%2) return (1LL*((1LL*x*x)%MOD)*a)%MOD;
 return (1LL*x*x)%MOD;
}

int main()
{
f>>cer;

if(cer==1)
   {
    f>>n>>k>>c;
    int sol=0;
    for(int i=1;i<=n;i++){
     int maxim=0;
     for(int j=1;j<=k;j++)
      {
       f>>v[j];
       maxim=max(maxim,dp[v[j]]);
      }
     for(int j=1;j<=k;j++)
       dp[v[j]]=maxim+1;
     sol=max(sol,maxim+1);
    }
    g<<sol;
   }

if(cer==2)
   {
    f>>k>>c;
    int nr=0,x,sol;
    for(int i=1;i<=k;i++){
      f>>x;
      if(fost[x]!=1) nr++,fost[x]=1;
    }
    nr=c-nr;
    sol=exp(c%MOD,c)-exp(nr%MOD,c);
    if(sol<0) sol+=MOD;
    g<<sol;
   }

if(cer==3)
   {




   }

}