Pagini recente » Cod sursa (job #47402) | Cod sursa (job #1895002) | Cod sursa (job #1981003) | Cod sursa (job #1365635) | Cod sursa (job #3220072)
//https://www.pbinfo.ro/probleme/3041/venus
#include <bits/stdc++.h>
using namespace std;
ifstream fin("venus.in");
ofstream fout("venus.out");
struct comenzi
{
int v;
int i;
int b;
long long ore;
}c[1010];
bool comparare(const comenzi &a,const comenzi &b)
{
if(a.v==b.v)
{
return a.ore<b.ore;
}
return a.v<b.v;
}
int main()
{
int n,t,i;
int zi,luna,ora;
int rez[1010],k=0;
string s;
tm start;
start.tm_year=120;
start.tm_mon=0;
start.tm_mday=1;
start.tm_hour=1;
start.tm_min=0;
start.tm_sec=0;
fin>>n>>t;
for(i=1;i<=n;++i)
{
fin>>c[i].v>>zi>>s>>ora;
c[i].i=i;
c[i].b=1;
//cout<<v<<" "<<zi<<" "<<s<<" "<<ora<<"\n";
{
if(s=="ianuarie")
{
luna=1;
}
else if(s=="februarie")
{
luna=2;
}
else if(s=="martie")
{
luna=3;
}
else if(s=="aprilie")
{
luna=4;
}
else if(s=="mai")
{
luna=5;
}
else if(s=="iunie")
{
luna=6;
}
else if(s=="iulie")
{
luna=7;
}
else if(s=="august")
{
luna=8;
}
else if(s=="septembrie")
{
luna=9;
}
else if(s=="octombrie")
{
luna=10;
}
else if(s=="noiembrie")
{
luna=11;
}
else if(s=="decembrie")
{
luna=12;
}
}
tm target;
target.tm_year=120;
target.tm_mon=luna-1;
target.tm_mday=zi;
target.tm_hour=ora;
target.tm_min=0;
target.tm_sec=0;
time_t startt=mktime(&start);
time_t targett=mktime(&target);
c[i].ore=difftime(targett,startt)/3600;
// cout<<c[i].v<<" "<<zi<<" "<<luna<<" "<<ora<<"\n";
// cout<<c[i].ore<<"\n";
// cout << "An: " << start.tm_year << endl;
// cout << "Lună: " << start.tm_mon << endl;
// cout << "Zi: " << start.tm_mday << endl;
// cout << "Ora: " << start.tm_hour << endl;
// cout << "Ora: " << start.tm_min << endl;
// cout << "Ora: " << start.tm_sec << endl;
// cout << "An: " << target.tm_year << endl;
// cout << "Lună: " << target.tm_mon << endl;
// cout << "Zi: " << target.tm_mday << endl;
// cout << "Ora: " << target.tm_hour << endl;
// cout<<"\n";
}
sort(c+1,c+n+1,comparare);
int oc=t,com=n,rezv=0;
while(com)
{
bool sant=0;
for(i=1;i<=n;++i)
{
if((c[i].ore>=oc)&&(c[i].ore<(oc+oc))))
{
c[i].b=0;
sant=1;
rez[++k]=c[i].i;
com--;
break;
}
if(c[i].ore>=(oc+oc))
{
for(j=1;j<i;++j)
{
if(c[i].ore>=oc)
{
c[i].b=0;
sant=1;
rez[++k]=c[j].i;
com--;
break;
}
}
break;
}
}
if(sant==0)
{
rezv+=
}
oc+=t;
}
return 0;
}